﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _18_Memento
{
    /*发起人 ，需要保存的数据对象*/
    class Originator
    {
        private string state;
        public string State
        {
            get { return state; }
            set { state = value; }
        }

        /*创建备忘录
         将当前要保存的信息导入并实例化出一个Memento对象 
             */
        public Memento CreateMemento()
        {
            return (new Memento(state));
        }
        /*恢复备忘录，将Memento 导入并将相关数据恢复*/
        public void SetMemento(Memento memento)
        {
            state = memento.State;
        }
        /*数据显示*/
        public void Show()
        {
            Console.WriteLine("State = " + state);
        }
    }

    /*备忘录类*/
    class Memento
    {
        private string state;

        /*构造方法，将相关数据导入*/
        public Memento(string state)
        {
            this.state = state;
        }
        /*需要保存的数据属性*/
        public string State
        {
            get { return state; }
        }
    }

    /* 管理者类 */
    class Caretaker
    {
        private Memento memento;
        /*得到或设置备忘录*/
        public Memento Memento
        {
            get { return memento; }
            set { memento = value; }
        }
    }
}
